import torchvision
import torch


def build_resnet101():
    """
    构建一个resnet101模型，去除最后的FC，使用预训练的模型
    :param: None
    :return: 处理好的resnet101模型
    :author: njupt-mcc(github)
    """
    if not hasattr(torchvision.models, 'resnet101'):  # 这个来检测是否有某个package真的很有效
        raise ValueError('Invalid model "%s"' % 'resnet101')
    cnn = getattr(torchvision.models, 'resnet101')(pretrained=True)  # 这里的getattr是python的内置函数，用于返回一个对象的属性值
    model = torch.nn.Sequential(*list(cnn.children())[:-1])  # 除去最后的FC

    assert torch.cuda.is_available(), 'only support GPU version'
    
    # model.eval()  # eval模式,eval指的是evaluation，不使用BN和dropout
    return model